Accéder au contenu principal Passer au contenu complémentaire

For each..next

L'instruction de contrôle for each..next est une construction d'itération de script qui exécute une ou plusieurs instructions pour chaque valeur d'une liste de valeurs séparées par des virgules. Les instructions comprises entre for et next à l'intérieur de la boucle sont exécutées pour chaque valeur de la liste.

 

Une syntaxe spéciale permet de générer des listes comprenant les noms des fichiers et des répertoires contenus dans le répertoire actif.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

 

Arguments For each
Argument Description
var Nom de variable de script qui prendra une nouvelle valeur à partir de la liste lors de chaque exécution de la boucle. Si l'argument var est spécifié après next, il doit s'agir du même nom de variable que celui qui se trouve après le for each correspondant.

Il est possible de modifier la valeur de la variable var à l'aide d'instructions placées à l'intérieur de la boucle, mais ce n'est pas une bonne méthode de programmation.

Si une clause exit for se trouve dans la boucle, l'exécution du script est transférée à la première instruction qui suit la clause next indiquant la fin de la boucle. Il est possible de rendre une clause exit for conditionnelle par l'utilisation facultative d'un suffixe when ou unless.

Note InformationsComme l'instruction for each..next est une instruction de contrôle et, en tant que telle, se termine par un point-virgule ou une fin de ligne, aucune de ses trois clauses possibles (for each,exit for et next) ne peut s'étendre sur plusieurs lignes.

 

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

 

Arguments List
Argument Description
constant Tout nombre ou toute chaîne. Veuillez noter qu'une chaîne écrite directement dans le script doit être placée entre guillemets simples. Une chaîne non mise entre guillemets simples est interprétée comme une variable ; la valeur de la variable lui est ensuite appliquée. Il est inutile de placer les nombres entre guillemets simples.
expression Expression arbitraire.
mask

Masque de nom de fichier ou de dossier pouvant inclure n'importe quel caractère de nom de fichier valide, ainsi que les caractères génériques standard, * et ?.

condition Expression logique dont l'évaluation a pour résultat True ou False.
statements Tout groupe d'une ou plusieurs instructions de script QlikView.
filelist mask

Cette syntaxe génère une liste de tous les fichiers, séparés par des virgules, qui se trouvent dans le répertoire actif et qui correspondent au masque de nom de fichier.

dirlist mask

Cette syntaxe génère une liste de tous les dossiers, séparés par des virgules, qui se trouvent dans le dossier actif et qui correspondent au masque de nom de dossier.

fieldvaluelist mask Cette syntaxe itère au sein des valeurs d'un champ déjà chargé dans QlikView.
Note AvertissementLe Qlik Connecteurs de fournisseurs de stockage Web et les autres connexions DataFiles ne prennent pas en charge les masques de filtre utilisant les caractères génériques (* et ?).

Chargement d'une liste de fichiers

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Création d'une liste de fichiers sur un disque

Dans cet exemple, la liste de tous les fichiers relatifs à QlikView sont chargés dans un dossier.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('C:')

Itération au sein des valeurs d'un champ

Cet exemple itère au sein de la liste des valeurs chargées de champ FIELD et génère un nouveau champ, NEWFIELD. Pour chaque valeur de FIELD, deux enregistrements NEWFIELD sont créés.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

La table résultante a l'aspect suivant :

Example 3
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

En savoir plus

 

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !

Rejoignez le Programme de modernisation analytique

Remove banner from view

Modernisez votre système sans compromettre vos précieuses applications QlikView grâce au Programme de modernisation analytique. Cliquez ici pour plus d'informations ou contactez : ampquestions@qlik.com